/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.cip.esymons.eventos.beans;

import java.io.File;
import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource;
import org.cip.esymons.colegiatura.bc.ColegiadoFacadeLocal;
import org.cip.esymons.colegiatura.be.Colegiado;
import org.cip.esymons.eventos.adapaters.RutaCarpetaReporte;
import org.cip.esymons.eventos.bc.AsistenciaAlumnoDelegate;
import org.cip.esymons.eventos.bc.AsistenciaDelegate;
import org.cip.esymons.eventos.bc.ConsejoDepartamentalDelegate;
import org.cip.esymons.eventos.bc.CursoDelegate;
import org.cip.esymons.eventos.bc.EspecialidadDelegate;
import org.cip.esymons.eventos.bc.EventoDelegate;
import org.cip.esymons.eventos.bc.InscripcionEventoDelegate;
import org.cip.esymons.eventos.bc.MatriculaDelegate;
import org.cip.esymons.eventos.bc.MovimientoCuentaDelegate;
import org.cip.esymons.eventos.bc.PreEventoDelegate;
import org.cip.esymons.eventos.bc.PreInscripcionEventoDelegate;
import org.cip.esymons.eventos.bc.TipoParticipanteDelegate;
import org.cip.esymons.eventos.be.AsistenciaAlumno;
import org.cip.esymons.eventos.be.AsistenciaParticipante;
import org.cip.esymons.eventos.be.Curso;
import org.cip.esymons.eventos.be.Evento;
import org.cip.esymons.eventos.be.InscripcionEventos;
import org.cip.esymons.eventos.be.Matricula;
import org.cip.esymons.eventos.be.Preevento;
import org.cip.esymons.eventos.be.PreinscripcionEvento;
import org.cip.esymons.eventos.be.TipoParticipanteEvento;
import org.cip.esymons.general.bc.PersonaNaturalDelegate;
import org.cip.esymons.general.bc.TelefonoDelegate;
import org.cip.esymons.general.be.ConsejoDepartamental;
import org.cip.esymons.general.be.Especialidad;
import org.cip.esymons.general.be.PersonaNatural;
import org.cip.esymons.general.be.TelefonoSolicitante;
import org.cip.esymons.general.util.ControladorAbstracto;
import org.cip.esymons.general.util.Utiles;
import org.cip.esymons.tesoreria.be.TipoMoneda;

/**
 *
 * @author OscarA
 */
public class InscripcionEventoController {

    private EspecialidadDelegate especialidadFacade;
    @EJB
    private ColegiadoFacadeLocal colegiadoFacade;
    InscripcionEventoDelegate delegate;
    InscripcionEventos inscripcion;
    List<InscripcionEventos> listaInscripciones;
    List<Evento> listaEventos;
    EventoDelegate delegateEvento;
    PersonaNatural persona;
    PersonaNaturalDelegate delegatePersona;
    TelefonoSolicitante telefono;
    Integer evento = 0;
    String dni;
    String sexo;
    String nroCip;
    Colegiado colegiadoSeleccionado;
    String correo;
    String telefonoFijo = "";
    String codigoFijo = "044";
    String telefonoCelular = "";
    String codigoCelular = "044";
    boolean estadoPer;
    PreinscripcionEvento preInscripcion;
    List<PreinscripcionEvento> listaPreInscripcion;
    List<PreinscripcionEvento> listaPreInscripcionEliminar;
    List<PreinscripcionEvento> listaPreInscripcionxEvento;
    List<PreinscripcionEvento> listaPreInscripcionxEvento1;
    Integer bandera;
    PreInscripcionEventoDelegate delegatePreInscripcion;
    boolean resgitro = true;
    Integer eventoSeleccionado = 0;
    Integer eventoSeleccionado1 = 0;
    Integer eventoSeleccionado2 = 1;
    PreinscripcionEvento preInscripcionSeleccionada;
    PreinscripcionEvento preInscripcionSeleccionada1;
    int codigoTipoParticipantes;
    int codigoTipoParticipantes2;
    Integer tipoHabil = 1;//0=Colegiado,1=No colegiado;
    Integer codigoEvento;
    String nombTipoParticipante = "------";
    String totalPreInscritos;
    String totalInscritos;
    private List<PersonaNatural> listaPreInscritos;
    private List<PersonaNatural> listaInscritos;
    private String consideraciones;

    public InscripcionEventoController() {
        inicializar();
    }

    //<editor-fold defaultstate="collapsed" desc="Metodo para Inicializar">
    public String inicializar() {
        preInscripcionSeleccionada1 = new PreinscripcionEvento();
        listaPreInscripcionxEvento1 = new ArrayList<PreinscripcionEvento>();
        delegate = new InscripcionEventoDelegate();
        inscripcion = new InscripcionEventos();
        listaEventos = new ArrayList<Evento>();
        listaInscripciones = new ArrayList<InscripcionEventos>();
        listaPreInscripcionEliminar = new ArrayList<PreinscripcionEvento>();
        listaPreInscripcionxEvento = new ArrayList<PreinscripcionEvento>();
        persona = new PersonaNatural();
        telefono = new TelefonoSolicitante();
        delegateEvento = new EventoDelegate();
        delegatePersona = new PersonaNaturalDelegate();
        listaPreInscripcion = new ArrayList<PreinscripcionEvento>();
        colegiadoSeleccionado = new Colegiado();
        correo = "@hotmail.com";
        nombTipoParticipante = "------";
        estadoPer = false;
        preInscripcion = new PreinscripcionEvento();
        preInscripcionSeleccionada = new PreinscripcionEvento();
        dni = "";
        nroCip = "";
        delegatePreInscripcion = new PreInscripcionEventoDelegate();
        totalPreInscritos = "No hay participantes pre - inscritos";
        listaPreInscritos = new ArrayList<PersonaNatural>();
        listaInscritos = new ArrayList<PersonaNatural>();
        if(!(listaPreInscripcionxEvento.size()>0)){
            eventoSeleccionado2=1;
            listarPreInscripcionxEvento1();
        }
        ControladorAbstracto.removeSessionProperty("AsistenciaParticipanteController");
        return "";
    }

    // // </editor-fold>
    // <editor-fold defaultstate="collapsed" desc="Get and Setter">
    public InscripcionEventoDelegate getDelegate() {
        return delegate;
    }

    public String getCodigoCelular() {
        return codigoCelular;
    }

    public void setCodigoCelular(String codigoCelular) {
        this.codigoCelular = codigoCelular;
    }

    public String getConsideraciones() {
        consideraciones =  "Soló se eliminada aquellas personas que todavia no han sido inscritas, solamente a los pre-inscritos.";
        return consideraciones;
    }

    public void setConsideraciones(String consideraciones) {
        this.consideraciones = consideraciones;
    }

    

    public String getCodigoFijo() {
        return codigoFijo;
    }

    public void setCodigoFijo(String codigoFijo) {
        this.codigoFijo = codigoFijo;
    }

    public String getTelefonoCelular() {
        return telefonoCelular;
    }

    public void setTelefonoCelular(String telefonoCelular) {
        this.telefonoCelular = telefonoCelular;
    }

    public String getTelefonoFijo() {
        return telefonoFijo;
    }

    public void setTelefonoFijo(String telefonoFijo) {
        this.telefonoFijo = telefonoFijo;
    }

    public TelefonoSolicitante getTelefono() {
        return telefono;
    }

    public void setTelefono(TelefonoSolicitante telefono) {
        this.telefono = telefono;
    }

    

    public PreinscripcionEvento getPreInscripcionSeleccionada1() {
        return preInscripcionSeleccionada1;
    }

    public void setPreInscripcionSeleccionada1(PreinscripcionEvento preInscripcionSeleccionada1) {
        this.preInscripcionSeleccionada1 = preInscripcionSeleccionada1;
    }

    public List<PreinscripcionEvento> getListaPreInscripcionxEvento1() {
        return listaPreInscripcionxEvento1;
    }

    public void setListaPreInscripcionxEvento1(List<PreinscripcionEvento> listaPreInscripcionxEvento1) {
        this.listaPreInscripcionxEvento1 = listaPreInscripcionxEvento1;
    }

    public Integer getEventoSeleccionado2() {
        return eventoSeleccionado2;
    }

    public void setEventoSeleccionado2(Integer eventoSeleccionado2) {
        this.eventoSeleccionado2 = eventoSeleccionado2;
    }

    public int getCodigoTipoParticipantes2() {
        return codigoTipoParticipantes2;
    }

    public Integer getCodigoEvento() {
        return codigoEvento;
    }

    public void setCodigoEvento(Integer codigoEvento) {
        this.codigoEvento = codigoEvento;
    }

    public String getTotalPreInscritos() {
        return totalPreInscritos;
    }

    public void setTotalPreInscritos(String totalPreInscritos) {
        this.totalPreInscritos = totalPreInscritos;
    }

    public String getTotalInscritos() {
        return totalInscritos;
    }

    public void setTotalInscritos(String totalInscritos) {
        this.totalInscritos = totalInscritos;
    }

    public List<PersonaNatural> getListaInscritos() {
        return listaInscritos;
    }

    public void setListaInscritos(List<PersonaNatural> listaInscritos) {
        this.listaInscritos = listaInscritos;
    }

    public List<PersonaNatural> getListaPreInscritos() {
        listarTotalPreInscritos();
        return listaPreInscritos;
    }

    public void setListaPreInscitos(List<PersonaNatural> listaPreInscritos) {
        this.listaPreInscritos = listaPreInscritos;
    }

    public void setCodigoTipoParticipantes2(int codigoTipoParticipantes2) {
        this.codigoTipoParticipantes2 = codigoTipoParticipantes2;
    }

    public Integer getEventoSeleccionado1() {
        return eventoSeleccionado1;
    }

    public void setEventoSeleccionado1(Integer eventoSeleccionado1) {
        this.eventoSeleccionado1 = eventoSeleccionado1;
    }

    public String getNombTipoParticipante() {
        return nombTipoParticipante;
    }

    public void setNombTipoParticipante(String nombTipoParticipante) {
        this.nombTipoParticipante = nombTipoParticipante;
    }

    public Integer getTipoHabil() {
        return tipoHabil;
    }

    public void setTipoHabil(Integer tipoHabil) {
        this.tipoHabil = tipoHabil;
    }

    public int getCodigoTipoParticipantes() {
        return codigoTipoParticipantes;
    }

    public void setCodigoTipoParticipantes(int codigoTipoParticipantes) {
        this.codigoTipoParticipantes = codigoTipoParticipantes;
    }

    public PreinscripcionEvento getPreInscripcionSeleccionada() {
        return preInscripcionSeleccionada;
    }

    public void setPreInscripcionSeleccionada(PreinscripcionEvento preInscripcionSeleccionada) {
        this.preInscripcionSeleccionada = preInscripcionSeleccionada;
    }

    public List<PreinscripcionEvento> getListaPreInscripcionxEvento() {
        return listaPreInscripcionxEvento;
    }

    public void setListaPreInscripcionxEvento(List<PreinscripcionEvento> listaPreInscripcionxEvento) {
        this.listaPreInscripcionxEvento = listaPreInscripcionxEvento;
    }

    public Integer getEventoSeleccionado() {
        return eventoSeleccionado;
    }

    public void setEventoSeleccionado(Integer eventoSeleccionado) {
        this.eventoSeleccionado = eventoSeleccionado;
    }

    public EspecialidadDelegate getEspecialidadFacade() {
        return especialidadFacade;
    }

    public void setEspecialidadFacade(EspecialidadDelegate especialidadFacade) {
        this.especialidadFacade = especialidadFacade;
    }

    public List<PreinscripcionEvento> getListaPreInscripcionEliminar() {
        return listaPreInscripcionEliminar;
    }

    public void setListaPreInscripcionEliminar(List<PreinscripcionEvento> listaPreInscripcionEliminar) {
        this.listaPreInscripcionEliminar = listaPreInscripcionEliminar;
    }

    public List<PreinscripcionEvento> getListaPreInscripcion() {
        return listaPreInscripcion;
    }

    public void setListaPreInscripcion(List<PreinscripcionEvento> listaPreInscripcion) {
        this.listaPreInscripcion = listaPreInscripcion;
    }

    public void setDelegate(InscripcionEventoDelegate delegate) {
        this.delegate = delegate;
    }

    public boolean getResgitro() {
        return resgitro;
    }

    public void setResgitro(boolean resgitro) {
        this.resgitro = resgitro;
    }

    public Integer getBandera() {
        return bandera;
    }

    public void setBandera(Integer bandera) {
        this.bandera = bandera;
    }

    public String getCorreo() {
        return correo;
    }

    public void setCorreo(String correo) {
        this.correo = correo;
    }

    public String getNroCip() {
        return nroCip;
    }

    public void setNroCip(String nroCip) {
        this.nroCip = nroCip;
    }

    public PreinscripcionEvento getPreInscripcion() {
        return preInscripcion;
    }

    public void setPreInscripcion(PreinscripcionEvento preInscripcion) {
        this.preInscripcion = preInscripcion;
    }

    public String getSexo() {
        return sexo;
    }

    public void setSexo(String sexo) {
        this.sexo = sexo;
    }

    public String getDni() {
        return dni;
    }

    public void setDni(String dni) {
        this.dni = dni;
    }

    public Integer getEvento() {
        return evento;
    }

    public void setEvento(Integer evento) {
        this.evento = evento;
    }

    public InscripcionEventos getInscripcion() {
        return inscripcion;
    }

    public void setInscripcion(InscripcionEventos inscripcion) {
        this.inscripcion = inscripcion;
    }

    public List<InscripcionEventos> getListaInscripciones() {
        return listaInscripciones;
    }

    public void setListaInscripciones(List<InscripcionEventos> listaInscripciones) {
        this.listaInscripciones = listaInscripciones;
    }

    public PersonaNatural getPersona() {
        return persona;
    }

    public void setPersona(PersonaNatural persona) {
        this.persona = persona;
    }

    public PersonaNaturalDelegate getDelegatePersona() {
        return delegatePersona;
    }

    public void setDelegatePersona(PersonaNaturalDelegate delegatePersona) {
        this.delegatePersona = delegatePersona;
    }

    public Colegiado getColegiadoSeleccionado() {
        return colegiadoSeleccionado;
    }

    public void setColegiadoSeleccionado(Colegiado colegiadoSeleccionado) {
        this.colegiadoSeleccionado = colegiadoSeleccionado;
    }

 

    

    // </editor-fold>
    public String preInscribir_participante() {
        //Solamente PreInscribirlo
        try {
            //Registrar persona
            try {
                registrarPersona();
            } catch (Exception e) {
                mostrarMensaje("ERROR: ", "No puede registrar a la persona...", FacesMessage.SEVERITY_ERROR);
                mostrarMensaje("FATAL: ", e.getMessage(), FacesMessage.SEVERITY_FATAL);
            }
            //PreInscribirlo
            try {
                preInscribir();
            } catch (Exception e) {
                mostrarMensaje("ERROR: ", "No puede pre-incribirlo...", FacesMessage.SEVERITY_ERROR);
                mostrarMensaje("FATAL: ", e.getMessage(), FacesMessage.SEVERITY_FATAL);
            }
            persona = new PersonaNatural();
            colegiadoSeleccionado = new Colegiado();
            dni = null;
            nroCip = null;
            preInscripcion = new PreinscripcionEvento();
        } catch (Exception ex) {
            mostrarMensaje("ERROR: ", "Al pre-inscribir al participante", FacesMessage.SEVERITY_ERROR);
            mostrarMensaje("FATAL: ", ex.getMessage(), FacesMessage.SEVERITY_FATAL);
        }
        inicializar();
        return "";
    }

    //Metodos
    public void regPersona_preInscipcion() {
        try {
            //Registrar persona
            try {
                registrarPersona();
            } catch (Exception e) {
            }
            //PreInscribirlo
            try {
                preInscribir();
            } catch (Exception e) {
            }
            //Inscribirlo en el Evento
            inscribir();
        } catch (Exception ex) {
        }
    }

    //hecho por lizardo
    @SuppressWarnings("static-access")
    public String exportar() {
        RutaCarpetaReporte ruta = new RutaCarpetaReporte();
        String rutaJasper = "", rutaPDF = "";
        String logoReporte = ruta.getRutaLogo();
        rutaJasper = ruta.getRutaReporte() + "rptPreInscritos.jasper";
        rutaPDF = ruta.getRutaPDF() + "PreInscritos.pdf";
        try {
            ConsejoDepartamental consejo = new ConsejoDepartamental();
            ConsejoDepartamentalDelegate delegadoConsejo = new ConsejoDepartamentalDelegate();
            consejo = delegadoConsejo.buscarActivo();
            String nombreConsejo = consejo.getCdeDescripcion();
            String abrevConsejo = consejo.getCdeAbreviatura();
            consejo = null;
            delegadoConsejo = null;
            Preevento preevento = new Preevento();
            PreEventoDelegate delegadoPreevento = new PreEventoDelegate();
            codigoEvento = (codigoEvento != null) ? codigoEvento : 0;
            preevento = delegadoPreevento.findID(codigoEvento);
            String nombreEvento = (preevento != null) ? preevento.getPreNombre() : "<Seleccione nombre del curso>";
            preevento = null;
            delegadoPreevento = null;
            Map parametros = new HashMap();
            parametros.put("nombreConsejo", nombreConsejo);
            parametros.put("abrevConsejo", abrevConsejo);
            parametros.put("logoReporte", logoReporte);
            parametros.put("nombreEvento", nombreEvento);
            File entrada = new File(rutaJasper);
            JasperPrint print = JasperFillManager.fillReport(new FileInputStream(entrada), parametros, new JRBeanCollectionDataSource(listaPreInscritos));
            if (ruta.generarPDF(rutaPDF, print)) {}
        } catch (Exception e) {
            System.out.println("-------" + e.toString());
        }
        return "";
    }

    public String eventosXPreInscribirse() {
        listaPreInscripcion = new ArrayList<PreinscripcionEvento>();
        listaEventos = new ArrayList<Evento>();
        try {
            listaEventos = delegateEvento.listarEventosEnCurso();
        } catch (Exception e) {
        }
        if (listaEventos.size() > 0) {
            for (Evento eve : listaEventos) {
                try {
                    //Cambiar por el codigo del Usuario
                    delegatePreInscripcion.buscarPreInscripcion(eve.getEveCodigo(), new Long(10));
                } catch (Exception e) {
                    PreinscripcionEvento pre = new PreinscripcionEvento();
                    pre.setEveCodigo(eve);
                    listaPreInscripcion.add(pre);
                }
            }
        }
        return "";
    }

    public String preInscribirColegiado() {
        PersonaNatural per = new PersonaNatural();
        per.setSolCodigo(new Long(10));
        preInscripcion.setPersonaNatural(per);
        preInscripcion.setPinFecha(new Date());
        if (preInscripcion.getEveCodigo().getPreevento().getPreTipo().equals("EV")) {
            preInscripcion.setPinTipo(false);
        } else {
            preInscripcion.setPinTipo(true);
        }
        preInscripcion.setPinEsPreinscripcion(false);
        try {
            delegatePreInscripcion.registrar(preInscripcion);
        } catch (Exception e) {
        }
        preInscripcion = new PreinscripcionEvento();
        return "";
    }

    public String listarPreInscripcionxPersona() {
        try {
            listaPreInscripcionEliminar = new ArrayList<PreinscripcionEvento>();
            listaPreInscripcionEliminar = delegatePreInscripcion.listarPreInscripcionesxUsuario(new Long(10));
        } catch (Exception e) {
        }
        return "";
    }

    public String registrarPersona(){

        try {

            if(estadoPer){
                delegatePersona.actualizar(persona);
                TelefonoDelegate delegateTelefono = new TelefonoDelegate();
                List<TelefonoSolicitante> listaTelefonos = new ArrayList<TelefonoSolicitante>();
                listaTelefonos = delegateTelefono.buscarXSolicitante(persona.getSolCodigo());
                for (TelefonoSolicitante tel : listaTelefonos) {
                    delegateTelefono.eliminar(tel);
                }
                //Registramos los Telefono Fijo
                if (telefonoFijo.length() > 0) {
                    TelefonoSolicitante telef = new TelefonoSolicitante();
                    telef.setSolCodigo(persona);
                    telef.setTsoCodciudad(codigoFijo);
                    telef.setTsoEstado(true);
                    telef.setTsoNumero(telefonoFijo);
                    telef.setTsotipoTelefono("Fijo");
                    telef.setTsotipoEmp("NN");
                    delegateTelefono.registrar(telef);
                    telefonoFijo = "";
                }
            //Registramos los Telefono Celular

                if (telefonoCelular.length() > 0) {
                    TelefonoSolicitante telef = new TelefonoSolicitante();
                    telef.setSolCodigo(persona);
                    telef.setTsoCodciudad(codigoCelular);
                    telef.setTsoEstado(true);
                    telef.setTsoNumero(telefonoCelular);
                    telef.setTsotipoTelefono("Celular");
                    telef.setTsotipoEmp("NN");
                    delegateTelefono.registrar(telef);
                    telefonoCelular = "";
                }
            }else{
                persona.setPerfechaRegistro(new Date());
                persona.setPerActivo(true);
                persona.setPerTipo(0);
                persona.setPerNroDNI(dni);

                delegatePersona.registrar(persona);

                 if (!telefonoFijo.isEmpty()) {
                    TelefonoSolicitante telef = new TelefonoSolicitante();
                    telef.setSolCodigo(persona);
                    telef.setTsoCodciudad(codigoFijo);
                    telef.setTsoEstado(true);
                    telef.setTsoNumero(telefonoFijo);
                    telef.setTsotipoTelefono("Fijo");
                    telef.setTsotipoEmp("NN");
                    TelefonoDelegate delegateTelefono = new TelefonoDelegate();
                    delegateTelefono.registrar(telef);
                    telefonoFijo = "";
                }

            //Registramos los Telefono Celular

                if (telefonoCelular.length() > 0) {
                    TelefonoSolicitante telef = new TelefonoSolicitante();
                    telef.setSolCodigo(persona);
                    telef.setTsoCodciudad(codigoCelular);
                    telef.setTsoEstado(true);
                    telef.setTsoNumero(telefonoCelular);
                    telef.setTsotipoTelefono("Celular");
                    telef.setTsotipoEmp("NN");
                    TelefonoDelegate delegateTelefono = new TelefonoDelegate();
                    delegateTelefono.registrar(telef);
                    telefonoCelular = "";

                }

            }
            return null;
        } catch (Exception e) {
            return null;
        }
    }
//    public String registrarPersona() {
//        try {
////            TelefonoDelegate delegateTelefono = new TelefonoDelegate();
//            if (sexo != null) {
////                if (sexo.equals("1")) {
////                    persona.setPerSexo(true);
////                } else {
////                    persona.setPerSexo(false);
////                }
//                if (estadoPer) {
//                    persona.setPerfechaRegistro(new Date());
//                    persona.setPerActivo(true);
//                    persona.setPerTipo(0);
//                    persona.setPerNroDNI(dni);
//                    //grabamos a la persona
////                    persona.setSolcorreopersonal1(correo);
//                    delegatePersona.registrar(persona);
//                    //Registramos los Telefono Fijo
//                    try {
//                        if (!telefonoFijo.isEmpty()) {
//                            TelefonoSolicitante telef = new TelefonoSolicitante();
//                            telef.setSolCodigo(persona);
//                            telef.setTsoCodciudad(codigoFijo);
//                            telef.setTsoEstado(true);
//                            telef.setTsoNumero(telefonoFijo);
//                            telef.setTsotipoTelefono("Fijo");
//                            telef.setTsotipoEmp("NN");
//                            TelefonoDelegate delegateTelefono = new TelefonoDelegate();
//                            delegateTelefono.registrar(telef);
//                            telefonoFijo = "";
//                        }
//                    } catch (Exception e) {
//                    }
//                    //Registramos los Telefono Celular
//                    try {
//                        if (telefonoCelular.length() > 0) {
//                            TelefonoSolicitante telef = new TelefonoSolicitante();
//                            telef.setSolCodigo(persona);
//                            telef.setTsoCodciudad(codigoCelular);
//                            telef.setTsoEstado(true);
//                            telef.setTsoNumero(telefonoCelular);
//                            telef.setTsotipoTelefono("Celular");
//                            telef.setTsotipoEmp("NN");
//                            TelefonoDelegate delegateTelefono = new TelefonoDelegate();
//                            delegateTelefono.registrar(telef);
//                            telefonoCelular = "";
//
//                        }
//                    } catch (Exception e) {
//                    }
//                } else {
//                    delegatePersona.actualizar(persona);
//                    TelefonoDelegate delegateTelefono = new TelefonoDelegate();
//                    List<TelefonoSolicitante> listaTelefonos = new ArrayList<TelefonoSolicitante>();
//                    listaTelefonos = delegateTelefono.buscarXSolicitante(persona.getSolCodigo());
//                    for (TelefonoSolicitante tel : listaTelefonos) {
//                        delegateTelefono.eliminar(tel);
//                    }
//                    //Registramos los Telefono Fijo
//                    try {
//                        if (telefonoFijo.length() > 0) {
//                            TelefonoSolicitante telef = new TelefonoSolicitante();
//                            telef.setSolCodigo(persona);
//                            telef.setTsoCodciudad(codigoFijo);
//                            telef.setTsoEstado(true);
//                            telef.setTsoNumero(telefonoFijo);
//                            telef.setTsotipoTelefono("Fijo");
//                            telef.setTsotipoEmp("NN");
//                            delegateTelefono.registrar(telef);
//                        }
//                    } catch (Exception e) {
//                    }
//                    //Registramos los Telefono Celular
//                    try {
//                        if (telefonoCelular.length() > 0) {
//                            TelefonoSolicitante telef = new TelefonoSolicitante();
//                            telef.setSolCodigo(persona);
//                            telef.setTsoCodciudad(codigoCelular);
//                            telef.setTsoEstado(true);
//                            telef.setTsoNumero(telefonoCelular);
//                            telef.setTsotipoTelefono("Celular");
//                            telef.setTsotipoEmp("NN");
//                            delegateTelefono.registrar(telef);
//                        }
//                    } catch (Exception e) {
//                    }
//                }
//            } else {
//            }
//        } catch (Exception ex) {
//            System.out.println("ERROR: Registrar Persona!!! " + ex.getMessage());
//        }
//        return "";
//    }

    public String preInscribir() {
        try {
            PreinscripcionEvento preInscripto = new PreinscripcionEvento();
            //preInscripto = delegatePreInscripcion.buscarPreInscripcion(evento, persona.getSolCodigo());
            preInscripto = delegatePreInscripcion.buscarPreInscricion(evento, persona.getSolCodigo(), new Date());
            if (preInscripto != null) {
                mostrarMensaje("Error: ", "Ud ya estaba pre-Inscrito en el Evento", FacesMessage.SEVERITY_ERROR);
                nombTipoParticipante = "------";
                return null;
            } else {
                try {
                    //PreInscripcion
                    TipoParticipanteDelegate delegateTipoParticipante = new TipoParticipanteDelegate();
                    TipoParticipanteEvento tipoParticipante = new TipoParticipanteEvento();
                    Evento ev = new Evento();
                    ev = delegateEvento.buscarEvento(evento);
                    preInscripcion.setEveCodigo(ev);
                    preInscripcion.setPersonaNatural(persona);
                    preInscripcion.setPinFecha(new Date());
                    if (persona.getPerTipo() == 1) {
                        //Colegiado
                        //Lizardo: Validar valor nulo de la condicion del colegiado                        
                        tipoParticipante = delegateTipoParticipante.buscar(codigoTipoParticipantes);
                        preInscripcion.setTpeCodigo(tipoParticipante);
                    } else {
                        //No Colegiado
                        tipoParticipante = delegateTipoParticipante.buscar(codigoTipoParticipantes);
                        preInscripcion.setTpeCodigo(tipoParticipante);
                    }
                    //corregiendo...! por lizardo
                    //System.out.println("TIPO EVENTO: " + preInscripcion.getEveCodigo().getPreevento().getPreTipo().equals("EV"));
                    if (preInscripcion.getEveCodigo().getPreevento() != null){
                        if (preInscripcion.getEveCodigo().getPreevento().getPreTipo().equals("EV")) {
                            preInscripcion.setPinTipo(false);
                        } else {
                            preInscripcion.setPinTipo(true);
                        }
                    } else {
                        //forzando para diplomados o cursos
                        preInscripcion.setPinTipo(true);
                    }
                    preInscripcion.setPinEsPreinscripcion(false);
                    delegatePreInscripcion.registrar(preInscripcion);
                    nombTipoParticipante = "----";
                    mostrarMensaje("Exito: ", "La pre-Inscripcion se realizo con éxito", FacesMessage.SEVERITY_INFO);
                    return null;
                } catch (Exception ex1) {
                    Logger.getLogger(InscripcionEventoController.class.getName()).log(Level.SEVERE, null, ex1);
                    System.out.println("ERROR: " + ex1.getMessage());
                }
                listarPreInscripcionxEvento();
                listarPreInscripcionxEvento1();
            }

        } catch (Exception ex) {
            mostrarMensaje("FATAL: ", ex.getMessage(), FacesMessage.SEVERITY_ERROR);
        }
        return "";
    }

    public String inscribir() {
        //Inscribirlo en el Evento
        try {
            //lizardo estuvo aqui
            inscripcion = delegate.listarInscripcionParticipanteEvento(evento, persona.getSolCodigo());
            //delegate.listarInscripcionParticipanteEvento(evento, persona.getSolCodigo());
        } catch (Exception ex) {
            try {
                inscripcion = new InscripcionEventos();
                inscripcion.setHevFecha(new Date());
                inscripcion.setHevCodigo(preInscripcion.getPinCodigo());
                delegate.crearInscripcion(inscripcion);
            } catch (Exception ex1) {
            }
        }
        return "";
    }

    public String guardar_Par_Ins_Asis() {
        try {
            regPersona_preInscipcion();
            //Lizardo estuvo aqui
            //Marcar Asistencia si es Alumno o Participante
            Preevento preevento = new Preevento();
            PreEventoDelegate delegadoPreevento = new PreEventoDelegate();
            evento = (evento != null) ? evento : 0;
            preevento = delegadoPreevento.findID(evento);
            Integer tipoAsistencia = 0;
            String preTipo = (preevento != null) ? preevento.getPreTipo() : "PR";
            if (preTipo == null) {
                tipoAsistencia = 1;     //EV
            } else {
                if (preTipo.compareTo("EV")==0) {
                    tipoAsistencia = 1; //EV
                } else {
                    if (preTipo.compareTo("CU")==0) {
                        tipoAsistencia = 2; //CU
                    } else {
                        if (preTipo.compareTo("PR")==0) {
                            tipoAsistencia = 3; //PR
                        }
                    }
                }
            }
            switch (tipoAsistencia) {
                case 1: //EVENTOS
                    //persona = delegatePersona.buscarDNI(dni);
                    AsistenciaParticipante asistencia = new AsistenciaParticipante();
                    AsistenciaDelegate delegateAsistencia = new AsistenciaDelegate();
                    asistencia.setAspEstado(true);
                    asistencia.setAspFecha(new Date());
                    asistencia.setAsphoraIngreso(new GregorianCalendar().getTime());
                    asistencia.setHevCodigo(inscripcion);
                    asistencia.setPerCodigo(persona);
                    delegateAsistencia.crearAsistencia(asistencia);
                    asistencia = null;
                    delegateAsistencia = null;
                    break;
                case 2: //CURSO
                    AsistenciaAlumno asistenciaAlumno = new AsistenciaAlumno();
                    AsistenciaAlumnoDelegate delegateAsistenciaAlumno = new AsistenciaAlumnoDelegate();
                    if (preInscripcion != null) {
                        if (preInscripcion.getMatricula() != null) {
                            asistenciaAlumno.setMatCodigo(preInscripcion.getMatricula());
                        } else {
                            mostrarMensaje("ERROR: ", "Este alumno no esta matriculado", FacesMessage.SEVERITY_ERROR);
                        }
                    } else {
                        mostrarMensaje("ERROR: ", "Este alumno no esta matriculado", FacesMessage.SEVERITY_ERROR);
                    }
                    asistenciaAlumno.setAsiEstado(1);   //esto indica asistencia, corregir en una segunda etapa el control
                    asistenciaAlumno.setAsiFecha(new Date());
                    asistenciaAlumno.setAsihoraIngreso(new GregorianCalendar().getTime());
                    delegateAsistenciaAlumno.registrar(asistenciaAlumno);
                    asistenciaAlumno = null;
                    delegateAsistenciaAlumno = null;
                    break;
                case 3: //PREEVENTO
                    mostrarMensaje("WARN: ", "Un preevento debe ser de tipo EVENTO o CURSO", FacesMessage.SEVERITY_ERROR);
                    break;
            }
            //fin de lizardo estuvo aqui
//            AsistenciaController controller = (AsistenciaController) ControladorAbstracto.getBean("AsitenciaController");
//            controller.getListaAsistenciaParticipantes();
            inicializar();
            correo = "@hotmail.com";
            mostrarMensaje("Exito:", "Gracias por Registrarse al Evento", FacesMessage.SEVERITY_INFO);
        } catch (Exception ex) {
//            mostrarMensaje("ERROR: ", "En marcar asistencia", FacesMessage.SEVERITY_ERROR);
//            Logger.getLogger(InscripcionEventoController.class.getName()).log(Level.SEVERE, null, ex);
        }
        //inicializar();
        return "";
    }

    public String buscarPersonaxCIP() {
        try {
            switch (nroCip.length()) {
                case 1:
                    nroCip = "00000" + nroCip;
                    break;
                case 2:
                    nroCip = "0000" + nroCip;
                    break;
                case 3:
                    nroCip = "000" + nroCip;
                    break;
                case 4:
                    nroCip = "00" + nroCip;
                    break;
                case 5:
                    nroCip = "0" + nroCip;
                    break;
            }
            colegiadoSeleccionado = colegiadoFacade.colegiadoPersona(nroCip);
            persona = colegiadoSeleccionado.getPersonaNatural();
            if(persona != null){
            estadoPer = true;
            }else{
                estadoPer = false;
            }
            retornarDNIPersona();
            tipoHabil = 0;
            if (colegiadoSeleccionado.getColCondicion()) {
                nombTipoParticipante = "Habil";
            } else {
                nombTipoParticipante = "Inhabil";
            }

        } catch (Exception e) {
            colegiadoSeleccionado = new Colegiado();
        }
        return "";
    }

    public void retornarDNIPersona() {
        try {
            dni = persona.getPerNroDNI();
        } catch (Exception e) {
        }
    }

    public String buscarPersonaxDNI(){

        try{
            if(dni.length()<8){
               mostrarMensaje("Error:", "EL dni debe tener 8 numeros ej:48752012", FacesMessage.SEVERITY_ERROR);
               return null;
            }

            persona = delegatePersona.buscarXDNI(dni);
            if(persona != null){
                estadoPer = true;
            }else{
                estadoPer = false;
                persona = new PersonaNatural();
            }

         return null;
        }catch(Exception ex){
            mostrarMensaje("Error:", "Solo esta permitidos numeros,Ingrese DNI correctamente ej:48752012", FacesMessage.SEVERITY_ERROR);
            return null;
        }


    }


//    public String buscarPersonaxDNI() {
//        try {
//            if (dni.length() < 8) {
//                mostrarMensaje("Error:", "EL dni debe tener 8 numeros ej:48752012", FacesMessage.SEVERITY_ERROR);
//                return null;
//            }
//            int idni = 0;
//            idni = Integer.parseInt(dni);
//            System.out.println("idni: " + idni);
//        } catch (Exception e) {
//            mostrarMensaje("Error:", "Solo esta permitidos numeros,Ingrese DNI correctamente ej:48752012", FacesMessage.SEVERITY_ERROR);
//        }
//        try {
//            persona = delegatePersona.buscarXDNI(dni);
//            //telefono y celular
//            if (persona.getSolCodigo() != null) {
//                TelefonoDelegate delegadoTelefono = new TelefonoDelegate();
//                try {
//                    Long perCodigo = persona.getSolCodigo();
//                    List<TelefonoSolicitante> listaTelefono = new ArrayList<TelefonoSolicitante>();
//                    listaTelefono = delegadoTelefono.buscarXSolicitante(perCodigo);
//                    telefono = (listaTelefono.size() > 0) ? listaTelefono.get(0) : new TelefonoSolicitante();
//                } catch (Exception ex) {
//                    mostrarMensaje("ERROR: ", "En buscar telefono de la persona", FacesMessage.SEVERITY_ERROR);
//                    System.out.println("FATAL: " + ex.getMessage());
//                }
//            } else {
//                telefono = new TelefonoSolicitante();
//
//            }
//
//            try {
//                //problema al buscar dni de una persona q no es colegiada
//                if (persona.getPerTipo() == 1) {
//                    nroCip = colegiadoFacade.buscarxId(persona.getSolCodigo());
//                    tipoHabil = 0;
//                    try {
//                        if (persona.getColegiado().getColCondicion()) {
//                            nombTipoParticipante = "Ing Habil";
//                        } else {
//                            nombTipoParticipante = "Ing Inhabil";
//                        }
//                    } catch (Exception e) {
//                        nombTipoParticipante = "Sin Estado";
//                    }
//
//                } else {
//                    nroCip = "No tiene Nro CIP.";
//                    tipoHabil = 1;
//                    nombTipoParticipante = "------";
//                }
//            } catch (Exception e) {
//                System.out.println("error " + e.toString());
//            } finally {
//                colegiadoSeleccionado = new Colegiado();
//                tipoHabil = 1;
//            }
//            estadoPer = false;
//            setResgitro(false);//Si ah sido registrado anteriormente
//        } catch (Exception ex) {
//            persona = new PersonaNatural();
//            estadoPer = true;
//            nombTipoParticipante = "------";
//            System.out.println("Error.. es .." + ex.toString());
//            setResgitro(true);//Si no ah sido registrado anteriormente
//        }
//        return "";
//    }

    public SelectItem[] getComboEspecilidades() {
        //Combo Eventos en Curso
        List<Especialidad> lista = new ArrayList<Especialidad>();
        try {

            lista = especialidadFacade.listarTodos();
            SelectItem[] comboESpecialidad = new SelectItem[lista.size()];
            for (int i = 0; i < lista.size(); i++) {

                comboESpecialidad[i] = new SelectItem(lista.get(i).getEspDescripcion(), lista.get(i).getEspDescripcion());
            }
            return comboESpecialidad;

        } catch (Exception e) {
            //Mensaje al usuario
            lista = new ArrayList<Especialidad>();
            SelectItem[] comboEspecialidad = new SelectItem[1];
            comboEspecialidad[0] = new SelectItem("", "No hay Especialidades");
            return comboEspecialidad;
        }
    }

    public String listarPreInscripcionxEvento() {
        try {
            listaPreInscripcionxEvento = delegatePreInscripcion.listarPreInscripcionesxEvento(eventoSeleccionado1);
        } catch (Exception e) {
            System.out.println("ERROR: No se puede listar los pre-inscritos " + e.getMessage());
        }
        return "";
    }

    public String listarPreInscripcionxEvento1() {
        try {
            listaPreInscripcionxEvento1 = delegatePreInscripcion.listarPreInscripcionesxEvento(eventoSeleccionado2);
        } catch (Exception e) {
            System.out.println("ERROR: No se puede listar los pre-inscritos " + e.getMessage());
        }
        return "";
    }

    public String inscribir_preInscripcion() {
        try {
            //Generar Cuenta- Consultar
            if (delegatePreInscripcion.cuentaIngresoCreada(eventoSeleccionado2)) {
            } else {
                mostrarMensaje("Error", "Usted no puede Inscribir al participante porque el evento no tiene creada una cuenta de ingreso..", FacesMessage.SEVERITY_ERROR);
                return null;
            }
            MovimientoCuentaDelegate delegateCuenta = new MovimientoCuentaDelegate();
            try {
                delegateCuenta.generarDeuda(preInscripcionSeleccionada1);
            } catch (Exception ex) {
                System.out.println("Problema en Tesoreria..");
                System.out.println("FATAL: " + ex.getMessage());
                return null;
            }
            System.out.println("1111");
            preInscripcionSeleccionada1.setPinEsPreinscripcion(true);
            delegatePreInscripcion.actualizar(preInscripcionSeleccionada1);
            //Matricular o Inscribir de acuerdo al Tipo
            Boolean pinTipo = preInscripcionSeleccionada1.getPinTipo();
            if (pinTipo) {
                //1=Curso,se le matricula
                Curso cur = new Curso();
                CursoDelegate delegateCurso = new CursoDelegate();
                try {
                    cur = delegateCurso.find(preInscripcionSeleccionada1.getEveCodigo().getEveCodigo());
                    int curm = 0;
                    curm = cur.getCurVacantes() - 1;
                    cur.setCurVacantes(curm);
                    delegateCurso.edit(cur);
                } catch (Exception e) {
                    System.out.println("FATAL: " + e.getMessage());
                }
                Matricula mat = new Matricula();
                MatriculaDelegate delegateMatricula = new MatriculaDelegate();
                mat.setMatCodigo(preInscripcionSeleccionada1.getPinCodigo());
                mat.setMatEstado(1);
                mat.setMatFecha(new Date());
                mat.setMatInhabilitado(false);
                mat.setMatestadoNota(0);
                mat.setPreinscripcionEvento(preInscripcionSeleccionada1);
                mat.setMatpromFinal(new Double(0));
                delegateMatricula.crearMatricula(mat);

            } else {
//                //0=Evento,se le inscribe
//                InscripcionEventos ins = new InscripcionEventos();
//                ins.setHevCodigo(preInscripcionSeleccionada1.getPinCodigo());
//                ins.setHevFecha(new Date());
//                ins.setPreinscripcionEvento(preInscripcionSeleccionada1);
//                delegate.crearInscripcion(ins);
//                inicializar();
            }
            //0=Evento o 1=Curso, se le inscribe
            InscripcionEventos ins = new InscripcionEventos();
            ins.setHevCodigo(preInscripcionSeleccionada1.getPinCodigo());
            ins.setHevFecha(new Date());
            ins.setPreinscripcionEvento(preInscripcionSeleccionada1);
            delegate.crearInscripcion(ins);
            inicializar();
        } catch (Exception e) {
            System.out.println("FATAL: " + e.getMessage());
        }
        listarPreInscripcionxEvento1();
        return "";
    }

    public SelectItem[] getComboEventos() {
        try {
            System.out.println("Ingreso 1");
            SelectItem[] selects = null;
            PreEventoDelegate delegadoPreevento = new PreEventoDelegate();
            List<Preevento> listaEvento = delegadoPreevento.listaEventos();

            selects = new SelectItem[listaEvento.size()];
            int cont = 0;
            boolean ban = true;
            for (Preevento preevento : listaEvento) {
                if (ban) {
                    preevento.setNroCaracteres(35);
                    ban = false;
                }
                SelectItem item = new SelectItem(preevento.getPreCodigo(), preevento.getPreNombreCorto());
                selects[cont++] = item;
            }
            return selects;
        } catch (Exception e) {
            System.out.println("Ingreso Error: " + e.getMessage());
            SelectItem[] selects = new SelectItem[1];
            SelectItem item = new SelectItem(null, "No existen eventos");
            selects[0] = item;
            return selects;
        }
    }

    public SelectItem[] getComboEventosSinCurso() {
        try {
            System.out.println("Ingreso 1");
            SelectItem[] selects = null;
            PreEventoDelegate delegadoPreevento = new PreEventoDelegate();
            List<Preevento> listaEvento = delegadoPreevento.listaEventosSinCurso();
            selects = new SelectItem[listaEvento.size()];
            int cont = 0;
            boolean ban = true;
            for (Preevento preevento : listaEvento) {
                if (ban) {
                    preevento.setNroCaracteres(35);
                    ban = false;
                }
                SelectItem item = new SelectItem(preevento.getPreCodigo(), preevento.getPreNombreCorto());
                selects[cont++] = item;
            }
            return selects;
        } catch (Exception e) {
            System.out.println("Ingreso Error: " + e.getMessage());
            SelectItem[] selects = new SelectItem[1];
            SelectItem item = new SelectItem(null, "No existen eventos");
            selects[0] = item;
            return selects;
        }
    }

    public SelectItem[] getComboEventosConCurso() {
        try {
            System.out.println("Ingreso 1");
            SelectItem[] selects = null;
            PreEventoDelegate delegadoPreevento = new PreEventoDelegate();
            List<Preevento> listaEvento = delegadoPreevento.listaEventosConCurso();
            selects = new SelectItem[listaEvento.size()];
            int cont = 0;
            boolean ban = true;
            for (Preevento preevento : listaEvento) {
                if (ban) {
                    preevento.setNroCaracteres(35);
                    ban = false;
                }
                SelectItem item = new SelectItem(preevento.getPreCodigo(), preevento.getPreNombreCorto());
                selects[cont++] = item;
            }
            return selects;
        } catch (Exception e) {
            System.out.println("Ingreso Error: " + e.getMessage());
            SelectItem[] selects = new SelectItem[1];
            SelectItem item = new SelectItem(null, "No existen eventos");
            selects[0] = item;
            return selects;
        }
    }

    public SelectItem[] getComboEventosVigentes() {
        //Combo Eventos en Curso
        try {
            List<Evento> listaEvento = new ArrayList<Evento>();
            listaEvento = delegateEvento.listarEventos();
            //listaEvento = delegateEvento.listarEventosEnCurso();
            SelectItem[] comboEventos = new SelectItem[listaEvento.size()];
            for (int i = 0; i < listaEvento.size(); i++) {
                String abrev = "";
                if (listaEvento.get(i).getPreevento().getPreNombre().length() > 45) {
                    abrev = listaEvento.get(i).getPreevento().getPreNombre().substring(0, 45);
                } else {
                    abrev = listaEvento.get(i).getPreevento().getPreNombre();
                }
                comboEventos[i] = new SelectItem(listaEvento.get(i).getPreevento().getPreCodigo(), abrev);
            }
            return comboEventos;

        } catch (Exception e) {
            //Mensaje al usuario
            System.out.println("Error combo Eventos--" + e.toString());
            SelectItem[] comboEventos = new SelectItem[1];
            comboEventos[0] = new SelectItem(0, "No hay Eventos");
            return comboEventos;
        }
    }

    public SelectItem[] getComboCursosVigentes() {
        //Combo Cursos en Proceso
        try {
            List<Preevento> listaEvento = new ArrayList<Preevento>();
            CursoDelegate delegadoCurso = new CursoDelegate();
            listaEvento = delegadoCurso.listarCursosAMatricular();
            SelectItem[] comboEventos = new SelectItem[listaEvento.size()];
            for (int i = 0; i < listaEvento.size(); i++) {
                String abrev = "";
                if (listaEvento.get(i).getPreNombre().length() > 45) {
                    abrev = listaEvento.get(i).getPreNombre().substring(0, 45);
                } else {
                    abrev = listaEvento.get(i).getPreNombre();
                }
                comboEventos[i] = new SelectItem(listaEvento.get(i).getPreCodigo(), abrev);
            }
            return comboEventos;

        } catch (Exception e) {
            //Mensaje al usuario
            System.out.println("Error combo Cursos--" + e.toString());
            SelectItem[] comboEventos = new SelectItem[1];
            comboEventos[0] = new SelectItem(0, "No hay Cursos");
            return comboEventos;
        }
    }

    public void mostrarMensaje(String resumen, String detalle, FacesMessage.Severity severidad) {
        try {
            FacesMessage fm = new FacesMessage(severidad, resumen, detalle);
            FacesContext.getCurrentInstance().addMessage(fm.toString(), fm);
        } catch (Exception e) {
            FacesMessage fm = new FacesMessage(FacesMessage.SEVERITY_ERROR, e.getMessage(), e.getMessage());
            FacesContext.getCurrentInstance().addMessage(fm.toString(), fm);
        }
    }

    public String orderListaPreisncritosAZ() {
        try {
            if (listaPreInscripcionxEvento.size() > 0) {
                listaPreInscripcionxEvento.clear();
                listaPreInscripcionxEvento = delegatePreInscripcion.listarPreInscripcionesxEventoAZ(eventoSeleccionado1);
            }
        } catch (Exception e) {
            System.out.println("Error en--" + e.toString());
        }

        return null;
    }

    public String orderListaPreisncritosZA() {
        try {
            if (listaPreInscripcionxEvento.size() > 0) {
                listaPreInscripcionxEvento.clear();
                listaPreInscripcionxEvento = delegatePreInscripcion.listarPreInscripcionesxEventoZA(eventoSeleccionado1);
            }
        } catch (Exception e) {
            System.out.println("Error en--" + e.toString());
        }

        return null;
    }

    public String eliminarPreinscripcion() {
        try {
            preInscripcionSeleccionada.setPinEliminado(true);
            delegatePreInscripcion.actualizar(preInscripcionSeleccionada);
            listarPreInscripcionxEvento();
            return null;
        } catch (Exception e) {
        }
        return null;
    }

    public String listarTotalPreInscritos() {
        try {
            validarCodigo();
            listaPreInscritos = delegatePreInscripcion.listarParticipantes(codigoEvento);
            totalPreInscritos = Utiles.totalRegistro(listaPreInscritos, "Participantes pre - inscritos");
        } catch (Exception ex) {
            System.out.println("FATAL: " + ex.getMessage());
        }
        return null;
    }

    public String listarTotalInscritos() {
        try {
            validarCodigo();
            InscripcionEventoDelegate delegadoInscripcion = new InscripcionEventoDelegate();
            listaInscritos = delegadoInscripcion.listarInscritos(codigoEvento);
            totalInscritos = Utiles.totalRegistro(listaInscritos, " inscritos");
        } catch (Exception ex) {
            mostrarMensaje("ERROR: ", "No se puede lista el total de inscritos", FacesMessage.SEVERITY_ERROR);
            System.out.println("FATAL: " + ex.getMessage());
        }
        return null;
    }

    public String validarCodigo() {
        codigoEvento = (codigoEvento != null) ? codigoEvento : 0;
        return null;
    }

    public SelectItem[] getComboTipoMoneda() {
        //Combo Eventos en Curso
        try {
            List<TipoMoneda> listaTipoMoneda = new ArrayList<TipoMoneda>();
            listaTipoMoneda = delegate.listarTipoMoneda();
            SelectItem[] comboTipoMoneda = new SelectItem[listaTipoMoneda.size()];
            int i = 0;
            for (TipoMoneda tmo : listaTipoMoneda) {
                comboTipoMoneda[i] = new SelectItem(tmo.getTmoCodigo(), tmo.getTmoSimbolo());
                i++;
            }
            return comboTipoMoneda;

        } catch (Exception e) {
            //Mensaje al usuario
            System.out.println("Error combo Tipo Moneda --" + e.toString());
            SelectItem[] comboTipoMoneda = new SelectItem[1];
            comboTipoMoneda[0] = new SelectItem(0, "No hay tipos de moneda");
            return comboTipoMoneda;
        }
    }
}
